Modern communications networks enable computing devices to communicate with each other, even when not directly communicatively coupled to each other. This is enabled by message-forwarding devices, e.g., routers, which are responsible for accepting messages originating from a source, and forwarding them towards a final destination. By networking numerous message-forwarding devices together, highly complex networks, such as the Internet, are possible.
In a complex network, such as the Internet, it can be computationally expensive for a router, for example, to determine how to forward a message. For example, a message may be a data unit known as a packet. If the network is a packet-switched network, each packet received by a router is permitted to take a different route to a given destination. Thus a router may potentially consider numerous factors for every packet that is received, such as present network conditions, quality of service policies, and so on. Because of the high volume of packets handled by modern routers, even small inefficiencies can accumulate to cause significant performance problems. Thus, methods and systems that can produce even small gains in efficiency are highly desirable.